package com.waitingsnow.common.share.netEaseMicroblog.message
{
	import com.waitingsnow.common.share.bridia.net.oauth.BDOAuthConnection;
	import com.waitingsnow.common.share.netEaseMicroblog.NEMicroblog;
	import com.waitingsnow.common.share.netEaseMicroblog.data.NEMObject;
	
	/**
	 * 
	 * @author Tensharp
	 *
	 * <p>包含了所有的私信接口</p> 
	 */	
	
	public class NEMMessage extends NEMObject
	{
		/**
		 * 
		 * <p>创建一个新的NEMMessage对象.</p>
		 *  
		 * @param parent 上级对象.(NEMicroblog)
		 * @param oauth OAuth链接
		 * 
		 */		
		
		public function NEMMessage(parent:NEMicroblog, oauth:BDOAuthConnection)
		{
			super(parent, oauth);
		}
		
		///
		///	[Direct message]
		///
		
		/**
		 * 
		 * <p>direct_messages</p> 
		 * <p>获取当前用户私信列表。</p>
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息。</li>
		 * 	<li>type非法或者其对应的排行榜无数据则发挥404的状态。</li>
		 * </ul>
		 * 
		 * @param since_id 	可选参数 : 上一页最后一条私信的id。
		 * @param count 	可选参数 : 获取私信的数量。
		 * 
		 */	
		
		public function direct_message (since_id:String = null, count:uint = 10):void
		{
			oauth.addOAuthParameters ("since_id", since_id, true);
			oauth.addOAuthParameters ("count", count.toString (), true);
			
			//
			
			super.connect ("DIRECT_MESSAGES");
		}
		
		///
		///	[Direct message sent]
		///
		
		/**
		 * 
		 * <p>direct_messages/sent</p> 
		 * <p>获取当前用户发送的私信列表。</p>
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息。</li>
		 * 	<li>type非法或者其对应的排行榜无数据则发挥404的状态。</li>
		 * </ul>
		 * 
		 * @param since_id 	可选参数 : 上一页最后一条私信的id。
		 * @param count 	可选参数 : 获取私信的数量。
		 * 
		 */	
		
		public function direct_message_sent (since_id:String = null, count:uint = 10):void
		{
			oauth.addOAuthParameters ("since_id", since_id, true);
			oauth.addOAuthParameters ("count", count.toString (), true);
			
			//
			
			super.connect ("DIRECT_MESSAGES_SENT");
		}
		
		///
		///	[Direct message new]
		///
		
		/**
		 * 
		 * <p>direct messages/new</p>
		 * <p>发送一条私信。</p>
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息；</li>
		 * 	<li>根据参数查找不到对应的用户则返回404的状态和错误信息。</li>
		 * 	<li>text参数为空或超过163字符或收信用户没有关注当前用户或用户发给本人则返回403的状态和错误信息。</li>
		 * </ul>
		 *  
		 * @param user 必选参数 : 收信用户的昵称，即name；
		 * @param text 必选参数 : 私信内容。
		 * 
		 */	
		
		public function direct_message_new (user:String, text:String):void
		{
			oauth.addOAuthParameters ("user", user, true);
			oauth.addOAuthParameters ("text", text, true);
			
			//
			
			super.connect ("DIRECT_MESSAGES_SENT", "POST");
		}
		
		///
		///	[Direct message destroy]
		///
		
		/**
		 * 
		 * <p>direct messages/destroy</p>
		 * <p>删除一条私信。</p>
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息；</li>
		 * 	<li>根据id参数查找不到对应的私信则返回404的状态和错误信息。</li>
		 * </ul>
		 * 
		 * @param id 必选参数 : 删除的私信id
		 * 
		 */	
		
		public function direct_message_destroy (id:String):void
		{
			oauth.addOAuthParameters ("id", id, true);
			
			//
			
			super.connect ("DIRECT_MESSAGES_DESTROY", "POST");
		}
		
		///
		///	[Direct message grouped]
		///
		
		/**
		 * 
		 * <p>direct_messages/grouped</p>
		 * <p>获取当前用户的私信会话列表（用户-用户对话方式）。</p> 
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息；</li>
		 * 	<li>根据参数查找不到对应的用户则返回404的状态和错误信息。</li>
		 * </ul>
		 * 
		 * @param since_id 	可选参数 : 上一页最后一条会话的id。
		 * @param count 	可选参数 : 获取私信的数量。
		 * 
		 */	
		
		public function direct_message_grouped (since_id:String = null, count:uint = 10):void
		{
			oauth.addOAuthParameters ("since_id", since_id, true);
			oauth.addOAuthParameters ("count", count.toString (), true);
			
			//
			
			super.connect ("DIRECT_MESSAGES_GROUPED");
		}
		
		///
		///	[Direct message session]
		///
		
		/**
		 * 
		 * <p>direct_messages/session</p>
		 * <p>获取用户-用户之间的会话私信</p>
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息；</li>
		 * 	<li>根据参数查找不到对应的用户则返回404的状态和错误信息。</li>
		 * </ul>
		 * 
		 * @param user_id 		可选参数 : 用户id 注：会话列表中的会话id就是 user_id
		 * @param screen_name 	可选参数 : 用户的screen_name，个性网址（可选）
		 * @param name 			可选参数 : 昵称
		 * @param since_id 		可选参数 : 上一页的最后一条私信id
		 * @param count 		可选参数 : 获取私信的数量.
		 * 
		 */	
		
		public function direct_message_session (user_id:String = null, screen_name:String = null, name:String = null, since_id:String = null, count:String = "10"):void
		{
			oauth.addOAuthParameters ("user_id", user_id, true);
			oauth.addOAuthParameters ("screen_name", screen_name, true);
			oauth.addOAuthParameters ("name", name, true);
			oauth.addOAuthParameters ("since_id", since_id, true);
			oauth.addOAuthParameters ("count", count, true);

			//
			
			super.connect ("DIRECT_MESSAGES_SESSION");
		}
		
		///
		///	[Direct message delete]
		///
		
		/**
		 * 
		 * <p>direct messages/destroy</p>
		 * <p>删除一组私信。</p>
		 * 
		 * @param id 必选参数 : 删除的私信会话id (相关用户的user id)
		 * 
		 */	
		
		public function direct_message_delete (id:String):void
		{
			oauth.addOAuthParameters ("id", id, true);
			
			//
			
			super.connect ("DIRECT_MESSAGES_DELETE", "POST");
		}
	}
}